package agenda;

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Serializable;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
/**
 * Classe Anotação
 * @author Wesley Brenno, Célio Roberto, Ricardo Magno
 *
 */
public class Anotação implements Serializable {
	private String Nome;
	private String Data;
	private File file;
	private String Anotacao;
	/**
	 * Cria uma anotação de Texto
	 * @param Nome
	 * 		Nome da anotaçã
	 * @param Data
	 * 		Data da anotação
	 * @param Anotacao
	 * 		Anotação a ser feita
	 */
	public Anotação(String Nome, String Data, String Anotacao) {
		this.Nome = Nome;
		this.Data = Data;
		this.Anotacao = Anotacao;
		this.file = null;
	}
	/**
	 * Cria uma anotação de com arquivo
	 * @param Nome
	 * 		Nome da anotação
	 * @param Data
	 * 		Data de Criação da anotação
	 * @param file
	 * 		Foto ou música
	 * @throws IOException 
	 */
	public Anotação(String Nome, String Data, File file) throws IOException {
		this.Nome = Nome;
		this.Data = Data;
		this.file = new File(file.getName());
		if(file.getName().substring(file.getName().lastIndexOf(".")+1).equals("jpg")||file.getName().substring(file.getName().lastIndexOf(".")+1).equals("JPG")){
			BufferedImage imagem = ImageIO.read(file);
			if(imagem.getHeight()>380 && imagem.getWidth()>485){
				RedimensionarImagem.redimensionaImagem(file, file.getName(), 485, 380);
			}
			if(imagem.getHeight()>380){
				RedimensionarImagem.redimensionaImagem(file, file.getName(),new ImageIcon(file.getName()).getIconWidth(), 380);
			}
			if(imagem.getWidth()>485){
				RedimensionarImagem.redimensionaImagem(file, file.getName(),485,new ImageIcon(file.getName()).getIconWidth());
			}
			else{
				copy(file,this.file);
			}
		}
		else{
			copy(file,this.file);
			this.Anotacao = null;
		}
	} 
	/**
	 * Pega o nome da anotação
	 * @return
	 * 		Nome da anotação
	 */
	public String getNome(){
		return this.Nome;
	}
	/**
	 * Retorna a data da anotação
	 * @return
	 * 		a data da anotação
	 */
	public String getData(){
		return this.Data;
	}
	/**
	 * Pega a anotação de Texto
	 * @return
	 * 		Anotação de Texto
	 */
	public String getAnotacao(){
		return this.Anotacao;
	}
	/**
	 * Pega a anotação em arquivo
	 * @return
	 * 		Anotação em arquivo 
	 */
	public File getFile(){
		return this.file;
	}
	// Copia arquivo desejado, para o arquivo de destino
    // Se o arquivo de destino não existir, ele será criado
    static void copy(File src, File dst) throws IOException {
        InputStream in = new FileInputStream(src);
        OutputStream out = new FileOutputStream(dst);           // Transferindo bytes de entrada para saída
        byte[] buf = new byte[1024];
        int len;
        while ((len = in.read(buf)) > 0) {
            out.write(buf, 0, len);
        }
        in.close();
        out.close();
    }

}
